package lcci;

public class leetcode0105 {
    public static void main(String[] args) {

    }

    public boolean oneEditAway(String first, String second) {
        // 始终让first 更长
        if (second.length() > first.length()) {
            return oneEditAway(second, first);
        }
        // 长度差大于1
        if (first.length() - second.length() > 1) {
            return false;
        }

        int edit = 1;
        int i = 0, j = 0;
        // 长度相等的情况
        if (first.length() == second.length()) {
            while (i < first.length()) {
                if (first.charAt(i) != second.charAt(j)) {
                    edit--;
                }
                i++;
                j++;
            }
        } else {
            // 长度差为1 的情况
            while (i < first.length()) {
                if (j == second.length()) {
                    return edit == 1;
                }
                if (first.charAt(i) == second.charAt(j)) {
                    i++;
                    j++;
                } else {
                    // 插入/删除字符
                    if (i != first.length() - 1 && first.charAt(i + 1) == second.charAt(j)) {
                        edit--;
                        i++;
                    } else {
                        return false;
                    }
                }
            }
        }

        return edit >= 0;
    }
}
